// package com.frejoys.service.impl;
//
//
// import com.frejoys.common.enums.ECashType;
// import com.frejoys.common.enums.EIsScore;
// import com.frejoys.common.enums.EOrderType;
// import com.frejoys.common.enums.EPayStatus;
// import com.frejoys.common.enums.EPayType;
// import com.frejoys.common.enums.EPlatform;
// import com.frejoys.common.enums.EPlatformWalletLogType;
// import com.frejoys.common.enums.EStatus;
// import com.frejoys.common.enums.EStoreActivityQueueStatus;
// import com.frejoys.common.enums.EStoreWalletLogType;
// import com.frejoys.common.enums.EUserWalletLogType;
// import com.frejoys.common.enums.EVerify;
// import com.frejoys.common.error.HttpStatus;
// import com.frejoys.common.exception.GeneralException;
// import com.frejoys.common.util.CacheKeyUtil;
// import com.frejoys.common.util.CacheUtil;
// import com.frejoys.common.util.CommonUtil;
// import com.frejoys.common.util.TimeUtil;
// import com.frejoys.dao.entity.AgentRoleGroup;
// import com.frejoys.dao.entity.Order;
// import com.frejoys.dao.entity.Platform;
// import com.frejoys.dao.entity.PlatformAgentGroup;
// import com.frejoys.dao.entity.PlatformAgentUser;
// import com.frejoys.dao.entity.StoreActivity;
// import com.frejoys.dao.entity.StoreActivityQueue;
// import com.frejoys.dao.entity.StoreStatisticsDay;
// import com.frejoys.dao.entity.StoreStatisticsMonth;
// import com.frejoys.dao.entity.StoreStatisticsYear;
// import com.frejoys.dao.entity.UserLevel;
// import com.frejoys.dao.entity.UserWalletLog;
// import com.frejoys.dao.mapper.OrderMapper;
// import com.frejoys.dao.mapper.StoreActivityMapper;
// import com.frejoys.dao.mapper.StoreActivityQueueMapper;
// import com.frejoys.dao.mapper.StoreSaleMapper;
// import com.frejoys.dao.mapper.StoreStatisticsDayMapper;
// import com.frejoys.dao.mapper.StoreStatisticsMonthMapper;
// import com.frejoys.dao.mapper.StoreStatisticsYearMapper;
// import com.frejoys.dao.mapper.UserWalletMapper;
// import com.frejoys.service.AgentRoleGroupService;
// import com.frejoys.service.AgentStoreService;
// import com.frejoys.service.AgentUserService;
// import com.frejoys.service.OrderService;
// import com.frejoys.service.PayService;
// import com.frejoys.service.PlatformAgentGroupService;
// import com.frejoys.service.PlatformAgentUserService;
// import com.frejoys.service.PlatformService;
// import com.frejoys.service.PlatformWalletLogService;
// import com.frejoys.service.RebateService;
// import com.frejoys.service.StoreUserService;
// import com.frejoys.service.StoreWalletLogService;
// import com.frejoys.service.UserLevelService;
// import com.frejoys.service.UserWalletLogService;
// import lombok.RequiredArgsConstructor;
// import lombok.extern.slf4j.Slf4j;
// import org.redisson.api.RLock;
// import org.redisson.api.RedissonClient;
// import org.springframework.stereotype.Service;
// import org.springframework.transaction.annotation.Transactional;
//
// import java.math.BigDecimal;
// import java.util.ArrayList;
// import java.util.List;
// import java.util.Set;
//
// // 返利service
// @Slf4j
// @Service
// @RequiredArgsConstructor
// public class RebateServiceImplBakNew implements RebateService {
//
//     private final RedissonClient redissonClient;
//
//     private final OrderService orderService;
//
//     private final PayService payService;
//
//     private final UserWalletMapper userWalletMapper;
//
//     private final OrderMapper orderMapper;
//
//     private final StoreActivityQueueMapper storeActivityQueueMapper;
//
//     private final StoreActivityMapper storeActivityMapper;
//
//     private final UserWalletLogService userWalletLogService;
//
//     private final PlatformService platformService;
//
//     private final StoreWalletLogService storeWalletLogService;
//
//     private final StoreSaleMapper storeSaleMapper;
//
//     private final StoreStatisticsYearMapper storeStatisticsYearMapper;
//
//     private final StoreStatisticsMonthMapper storeStatisticsMonthMapper;
//
//     private final StoreStatisticsDayMapper storeStatisticsDayMapper;
//
//     private final PlatformWalletLogService platformWalletLogService;
//
//     private final AgentStoreService agentStoreService;
//
//     private final UserLevelService userLevelService;
//
//     private final PlatformAgentUserService platformAgentUserService;
//
//     private final PlatformAgentGroupService platformAgentGroupService;
//
//     private final AgentUserService agentUserService;
//
//     private final AgentRoleGroupService agentRoleGroupService;
//
//     private final StoreUserService storeUserService;
//
//     @Transactional(rollbackFor = Exception.class)
//     @Override
//     public void timeoutOrder() {
//         // 读取集合中超时的订单
//         Set<String> orderSet = CacheUtil.getOrderTimeoutSortSet(TimeUtil.unixTime(), 0, 100);
//
//         if (!orderSet.isEmpty()) {
//
//             // 已经支付的实物订单号
//             List<Long> payGoodsOrderSn = new ArrayList<>();
//             // 已经支付的虚拟订单号
//             List<Long> payVirtuallyOrderSn = new ArrayList<>();
//             // 未支付的实物订单号
//             List<Long> noPayGoodsOrderSn = new ArrayList<>();
//             // 未支付的虚拟订单号
//             List<Long> noPayVirtuallyOrderSn = new ArrayList<>();
//
//             // 查询数据
//             List<Order> orders = orderService.getListTaskByOrderSn(orderSet.stream().toList());
//             for (Order order : orders) {
//                 // 是否核销，支付状态
//                 if (order.getStatus() < EStatus.on.getValue() || order.getVerify() > EVerify.inProgress.getValue() || order.getPayStatus() > EPayStatus.wait.getValue() || order.getIsScore().equals(EIsScore.finish.getValue())) {
//                     CacheUtil.delOrderTimeoutSortSet(order.getOrderSn());
//                     continue;
//                 }
//
//                 // 查询订单是否支付
//                 try {
//                     if (order.getPayType().equals(EPayType.alipay.getValue())) {
//                         // 查询支付宝是否支付
//                         if (payService.aliOrderPayResult(String.valueOf(order.getOrderSn()))) {
//
//                             // 实物订单
//                             if (order.getType().equals(EOrderType.goodsOrder.getValue())) {
//                                 payGoodsOrderSn.add(order.getOrderSn());
//                             } else {
//                                 // 虚拟订单
//                                 payVirtuallyOrderSn.add(order.getOrderSn());
//                             }
//
//                         } else {
//
//                             // 实物订单
//                             if (order.getType().equals(EOrderType.goodsOrder.getValue())) {
//                                 noPayGoodsOrderSn.add(order.getOrderSn());
//                             } else {
//                                 // 虚拟订单
//                                 noPayVirtuallyOrderSn.add(order.getOrderSn());
//                             }
//
//                         }
//
//                     } else if (order.getPayType().equals(EPayType.wechat.getValue())) {
//                         // 查询微信是否支付
//                         if (payService.wxOrderPayResult(String.valueOf(order.getOrderSn()))) {
//
//                             // 实物订单
//                             if (order.getType().equals(EOrderType.goodsOrder.getValue())) {
//                                 payGoodsOrderSn.add(order.getOrderSn());
//                             } else {
//                                 // 虚拟订单
//                                 payVirtuallyOrderSn.add(order.getOrderSn());
//                             }
//
//                         } else {
//
//                             // 实物订单
//                             if (order.getType().equals(EOrderType.goodsOrder.getValue())) {
//                                 noPayGoodsOrderSn.add(order.getOrderSn());
//                             } else {
//                                 // 虚拟订单
//                                 noPayVirtuallyOrderSn.add(order.getOrderSn());
//                             }
//
//                         }
//                     }
//
//                 } catch (Exception e) {
//                     // System.out.println("订单任务错误：" + order.getOrderSn());
//                     // e.printStackTrace();
//                     log.error("订单任务错误(" + order.getOrderSn() + ")：", e);
//                 }
//
//                 CacheUtil.delOrderTimeoutSortSet(order.getOrderSn());
//             }
//
//             // 更新已经支付实物订单为已支付
//             if (!payGoodsOrderSn.isEmpty()) {
//                 orderService.taskUpOrderPayStatus(payGoodsOrderSn, EPayStatus.wait.getValue(), EPayStatus.finish.getValue(), null);
//             }
//
//             // 更新已经支付虚拟订单为已支付
//             if (!payVirtuallyOrderSn.isEmpty()) {
//                 orderService.taskUpOrderPayStatus(payVirtuallyOrderSn, EPayStatus.wait.getValue(), EPayStatus.finish.getValue(), EVerify.inProgress.getValue());
//             }
//
//             // 更新未支付的实物订单号为失效
//             if (!noPayGoodsOrderSn.isEmpty()) {
//
//                 // 还原商品
//                 for (Long o : noPayGoodsOrderSn) {
//                     orderService.resetOrderRepCountPo(o);
//                 }
//
//                 orderService.upOrderStatus(noPayGoodsOrderSn, EStatus.off.getValue());
//             }
//
//             // 更新未支付的虚拟订单号为失效
//             if (!noPayVirtuallyOrderSn.isEmpty()) {
//                 orderService.upOrderStatus(noPayVirtuallyOrderSn, EStatus.off.getValue());
//             }
//
//         }
//     }
//
//     @Transactional(rollbackFor = Exception.class)
//     @Override
//     public void orderVerify(Integer orderId) {
//
//         RLock lock = redissonClient.getLock(CacheKeyUtil.orderTaskVerifyLockKey(orderId));
//
//         if (lock.tryLock()) {
//             try {
//
//                 /// 开始进行核销计算
//                 Order order = orderMapper.getForUpdateInfo(orderId);
//                 if (order == null || !order.getStatus().equals(EStatus.on.getValue()) || !order.getVerify().equals(EVerify.inProgress.getValue())) {
//                     return;
//                 }
//
//                 // 用户id
//                 Long userId = order.getUserId();
//                 // 订单金额
//                 BigDecimal price = order.getPrice();
//                 // 店铺id
//                 Integer storeId = order.getStoreId();
//                 // 店铺活动id
//                 Integer storeActivityId = order.getStoreActivityId();
//                 // 订单编号
//                 Long orderSn = order.getOrderSn();
//
//                 Integer nt = TimeUtil.unixTime();
//                 Integer ntY = Integer.valueOf(TimeUtil.formatY(nt));
//                 Integer ntYm = Integer.valueOf(TimeUtil.formatYm(nt));
//                 Integer ntYmd = Integer.valueOf(TimeUtil.formatYMD(nt));
//
//                 // 获取平台设置
//                 Platform platform = platformService.getInfo();
//
//                 // 计算百分比
//                 BigDecimal hundred = CommonUtil.integerToBigDecimal(100);
//
//                 // 0元
//                 BigDecimal zero = BigDecimal.ZERO;
//
//                 // 交易手续费
//                 BigDecimal bankCashChargesMoney = CommonUtil.bigDecimalMultiply(price, CommonUtil.bigDecimalDivide(CommonUtil.floatToBigDecimal(platform.getBankCashChargesRatio()), hundred));
//
//
//                 // 店铺最终金额 = 减去交易手续费
//                 BigDecimal storeMoney = price.subtract(bankCashChargesMoney);
//
//                 // 活动存在，按照活动比例计算
//                 if (storeActivityId != null) {
//
//                     // 获取店铺活动返利等信息
//                     StoreActivity activity = storeActivityMapper.getVerifyInfo(storeActivityId);
//                     if (activity == null) {
//                         return;
//                     }
//
//                     // 返利金额
//                     BigDecimal rebateMoney = CommonUtil.bigDecimalMultiply(price, CommonUtil.bigDecimalDivide(CommonUtil.floatToBigDecimal(activity.getRebateRatio()), hundred));
//
//                     // 总推广金额(推广金额使用的推广比例，包含了佣金比例)
//                     BigDecimal promotionMoneyTotal = CommonUtil.bigDecimalMultiply(price, CommonUtil.bigDecimalDivide(CommonUtil.floatToBigDecimal(activity.getPromotionRatio()), hundred));
//
//                     // 店铺最终金额 = 减去各种金额
//                     storeMoney = storeMoney.subtract(rebateMoney).subtract(promotionMoneyTotal);
//
//                     // 推广金额有一部分比例是佣金
//                     // 佣金比例占推广比例的百分比，计算佣金金额
//                     BigDecimal commissionMoney = CommonUtil.bigDecimalMultiply(promotionMoneyTotal, CommonUtil.bigDecimalDivide(CommonUtil.floatToBigDecimal(platform.getCommissionRatio()), hundred));
//
//                     // 总推广金额减去佣金金额 = 推广金额
//                     BigDecimal promotionMoney = CommonUtil.bigDecimalSubtract(promotionMoneyTotal, commissionMoney);
//
//                     // 获取店铺绑定的代理人
//                     Long agentUserId = agentStoreService.getAgentUserIdByStoreId(storeId);
//
//
//                     // 代理
//                     if (commissionMoney.compareTo(zero) > 0) {
//
//                         if (agentUserId == null) {
//                             throw new GeneralException(HttpStatus.agentUserError);
//                         }
//
//                         // 代理分成
//                         agentCommission(platform, agentUserId, commissionMoney, orderSn, ECashType.order.getValue(), nt, hundred, zero);
//
//                     }
//
//
//                     // 达人
//                     if (promotionMoney.compareTo(zero) > 0) {
//                         // 获取订单用户的推荐人
//                         UserLevel userLevel = userLevelService.getParentInfo(order.getUserId());
//                         if (userLevel != null) {
//
//                             // 计算达人一级金额
//                             BigDecimal userPromotionOne = CommonUtil.bigDecimalMultiply(promotionMoney, CommonUtil.bigDecimalDivide(CommonUtil.floatToBigDecimal(platform.getPromotionUserRatio()), hundred));
//
//                             // 计算达人二级金额
//                             BigDecimal userPromotionTwo = promotionMoney.subtract(userPromotionOne);
//
//                             // 订单用户达人一级推荐人
//                             if (userPromotionOne.compareTo(zero) > 0) {
//                                 userWalletLogService.addInfo(userLevel.getUserId(), userPromotionOne, zero, orderSn, EUserWalletLogType.promotionRebate.getValue(), nt, EStatus.on.getValue());
//                             }
//
//                             if (userPromotionTwo.compareTo(zero) > 0) {
//
//                                 // 达人二级推荐人
//                                 if (userLevel.getParentUserId() > 0) {
//                                     userWalletLogService.addInfo(userLevel.getParentUserId(), userPromotionTwo, zero, orderSn, EUserWalletLogType.promotionRecommendRebate.getValue(), nt, EStatus.on.getValue());
//                                 } else {
//                                     // 无达人二级推荐人，存入平台
//                                     platformWalletLogService.addInfo(EPlatform.agentRoleGroupId.getValue(), userPromotionTwo, orderSn, EPlatformWalletLogType.userOrderOut.getValue(), nt);
//                                 }
//
//                             }
//
//                         } else {
//                             // 没有达人推荐人，存入平台
//                             platformWalletLogService.addInfo(EPlatform.agentRoleGroupId.getValue(), promotionMoney, orderSn, EPlatformWalletLogType.userOrderOut.getValue(), nt);
//                         }
//                     }
//
//
//                     // 返利
//                     if (rebateMoney.compareTo(zero) > 0) {
//
//                         // 返利金额放入店铺活动金额池，增加人数
//                         storeActivityMapper.upActivityInfo(storeActivityId, rebateMoney);
//
//                         // 放入排队队伍
//                         storeActivityQueueMapper.addQueue(userId, storeActivityId, orderSn, price, price, activity.getType(), nt, EStatus.on.getValue());
//
//                         // 放入用户账户
//                         userWalletLogService.addInfo(userId, price, zero, orderSn, EUserWalletLogType.order.getValue(), nt, EStatus.on.getValue());
//
//                     }
//
//
//                     // 店铺
//                     if (storeMoney.compareTo(zero) > 0) {
//
//                         // 店铺钱包
//                         storeWalletLogService.addInfo(storeId, storeMoney, zero, bankCashChargesMoney, orderSn, EStoreWalletLogType.order.getValue(), nt, EStatus.on.getValue());
//
//                         // 记录店铺销售记录
//                         storeSaleMapper.addInfo(agentUserId, storeId, storeActivityId, orderId, price, activity.getRebateRatio(), activity.getPromotionRatio(), platform.getCommissionRatio(), platform.getBankCashChargesRatio(), rebateMoney, promotionMoneyTotal, commissionMoney, storeMoney, bankCashChargesMoney, ntY, ntYm, ntYmd, nt);
//
//                         // 记录店铺年统计
//                         StoreStatisticsYear storeYear = storeStatisticsYearMapper.getIdInfo(storeId, ntY);
//                         if (storeYear == null) {
//                             storeStatisticsYearMapper.addInfo(storeId, price, rebateMoney, promotionMoneyTotal, commissionMoney, storeMoney, bankCashChargesMoney, ntY, nt);
//                         } else {
//                             storeStatisticsYearMapper.upInfo(storeYear.getId(), price, rebateMoney, promotionMoneyTotal, commissionMoney, storeMoney, bankCashChargesMoney);
//                         }
//
//                         // 记录店铺月统计
//                         StoreStatisticsMonth storeMonth = storeStatisticsMonthMapper.getIdInfo(storeId, ntYm);
//                         if (storeMonth == null) {
//                             storeStatisticsMonthMapper.addInfo(storeId, price, rebateMoney, promotionMoneyTotal, commissionMoney, storeMoney, bankCashChargesMoney, ntY, ntYm, nt);
//                         } else {
//                             storeStatisticsMonthMapper.upInfo(storeMonth.getId(), price, rebateMoney, promotionMoneyTotal, commissionMoney, storeMoney, bankCashChargesMoney);
//                         }
//
//                         // 记录店铺日统计
//                         StoreStatisticsDay storeDay = storeStatisticsDayMapper.getIdInfo(storeId, ntYmd);
//                         if (storeDay == null) {
//                             storeStatisticsDayMapper.addInfo(storeId, price, rebateMoney, promotionMoneyTotal, commissionMoney, storeMoney, bankCashChargesMoney, ntY, ntYm, ntYmd, nt);
//                         } else {
//                             storeStatisticsDayMapper.upInfo(storeDay.getId(), price, rebateMoney, promotionMoneyTotal, commissionMoney, storeMoney, bankCashChargesMoney);
//                         }
//
//
//
//                     }
//
//
//                     // 绑定消费用户给店家
//                     userLevelService.addChildUser(storeUserService.getStoreOwnerUserId(storeId), userId);
//
//
//                 } else {
//
//                     // 活动不存在，订单金额全部给商家钱包
//                     storeWalletLogService.addInfo(storeId, storeMoney, zero, bankCashChargesMoney, orderSn, EStoreWalletLogType.order.getValue(), nt, EStatus.on.getValue());
//
//                     // 记录店铺销售记录
//                     storeSaleMapper.addInfo(order.getUserId(), storeId, storeActivityId, order.getId(), price, 0F, 0F, 0F, platform.getBankCashChargesRatio(), zero, zero, zero, storeMoney, bankCashChargesMoney, ntY, ntYm, ntYmd, nt);
//
//                     // 记录店铺年统计
//                     StoreStatisticsYear storeYear = storeStatisticsYearMapper.getIdInfo(storeId, ntY);
//                     if (storeYear == null) {
//                         storeStatisticsYearMapper.addInfo(storeId, price, zero, zero, zero, storeMoney, bankCashChargesMoney, ntY, nt);
//                     } else {
//                         storeStatisticsYearMapper.upInfo(storeYear.getId(), price, zero, zero, zero, storeMoney, bankCashChargesMoney);
//                     }
//
//                     // 记录店铺月统计
//                     StoreStatisticsMonth storeMonth = storeStatisticsMonthMapper.getIdInfo(storeId, ntYm);
//                     if (storeMonth == null) {
//                         storeStatisticsMonthMapper.addInfo(storeId, price, zero, zero, zero, storeMoney, bankCashChargesMoney, ntY, ntYm, nt);
//                     } else {
//                         storeStatisticsMonthMapper.upInfo(storeMonth.getId(), price, zero, zero, zero, storeMoney, bankCashChargesMoney);
//                     }
//
//                     // 记录店铺日统计
//                     StoreStatisticsDay storeDay = storeStatisticsDayMapper.getIdInfo(storeId, ntYmd);
//                     if (storeDay == null) {
//                         storeStatisticsDayMapper.addInfo(storeId, price, zero, zero, zero, storeMoney, bankCashChargesMoney, ntY, ntYm, ntYmd, nt);
//                     } else {
//                         storeStatisticsDayMapper.upInfo(storeDay.getId(), price, zero, zero, zero, storeMoney, bankCashChargesMoney);
//                     }
//
//                 }
//
//                 // 订单交易手续费
//                 if (bankCashChargesMoney.compareTo(zero) > 0) {
//                     platformWalletLogService.addInfo(EPlatform.agentRoleGroupId.getValue(), bankCashChargesMoney, orderSn, EPlatformWalletLogType.orderCashCharges.getValue(), nt);
//                 }
//
//                 // 更新订单为已结算
//                 if (!orderMapper.upVerifyInfo(orderId, EVerify.inProgress.getValue(), EVerify.finish.getValue())) {
//                     throw new GeneralException(HttpStatus.orderSettlementFail);
//                 }
//
//
//
//             } finally {
//                 if (lock.isLocked() && lock.isHeldByCurrentThread()) {
//                     lock.unlock();
//                 }
//             }
//         }
//
//
//         // if (null == null) {
//         //     throw new GeneralException(HttpStatus.codeAlreadySend);
//         // }
//
//     }
//
//     /**
//      * 代理人员分成
//      * @param platform 默认分成设置
//      * @param agentUserId 商家代理用户id
//      * @param commissionMoney 分成金额
//      * @param orderSn 订单号
//      * @param cashType 分成现金的来源
//      * @param nt 当前时间戳
//      */
//     private void agentCommission(Platform platform, Long agentUserId, BigDecimal commissionMoney, Long orderSn, Integer cashType, Integer nt, BigDecimal hundred, BigDecimal zero) {
//
//         // 展现平台分成的类型
//         Integer savePlatformype = EPlatformWalletLogType.userOrder.getValue();
//
//         // 展现代理分成的类型
//         Integer saveAgentType = EUserWalletLogType.agentRebate.getValue();
//
//         // 如果是提现手续费
//         if (cashType.equals(ECashType.withdraw.getValue())) {
//             savePlatformype = EPlatformWalletLogType.userCashCharges.getValue();
//             saveAgentType = EUserWalletLogType.agentCashRebate.getValue();
//         }
//
//         /// 默认使用通用分成比例
//         // 平台分成比例
//         BigDecimal platformRatio = CommonUtil.bigDecimalDivide(CommonUtil.floatToBigDecimal(platform.getPlatformRatio()), hundred);
//         // 代理人分成比例
//         BigDecimal agentUserRatio = CommonUtil.bigDecimalDivide(CommonUtil.floatToBigDecimal(platform.getAgentUserRatio()), hundred);
//         // 代理人一级推荐比例
//         BigDecimal agentUserRatioOne = CommonUtil.bigDecimalDivide(CommonUtil.floatToBigDecimal(platform.getAgentUserRatioOne()), hundred);
//         // 代理人二级推荐比例
//         BigDecimal agentUserRatioTwo = CommonUtil.bigDecimalDivide(CommonUtil.floatToBigDecimal(platform.getAgentUserRatioTwo()), hundred);
//
//         /// 如果代理人存在指定的分成比例组中，则按照分成组中比例
//         // 获取代理所在平台代理提成组关系
//         PlatformAgentUser platformAgentUser = platformAgentUserService.getInfo(agentUserId);
//         if (platformAgentUser != null) {
//             // 获取提成组信息
//             PlatformAgentGroup agentGroup = platformAgentGroupService.getInfo(platformAgentUser.getPlatformAgentGroupId());
//             if (agentGroup != null) {
//                 platformRatio = CommonUtil.bigDecimalDivide(CommonUtil.floatToBigDecimal(agentGroup.getPlatformRatio()), hundred);
//                 agentUserRatio = CommonUtil.bigDecimalDivide(CommonUtil.floatToBigDecimal(agentGroup.getAgentUserRatio()), hundred);
//                 agentUserRatioOne = CommonUtil.bigDecimalDivide(CommonUtil.floatToBigDecimal(agentGroup.getAgentUserRatioOne()), hundred);
//                 agentUserRatioTwo = CommonUtil.bigDecimalDivide(CommonUtil.floatToBigDecimal(agentGroup.getAgentUserRatioTwo()), hundred);
//             }
//         }
//
//         // 计算平台比例金额
//         BigDecimal platformMoney = CommonUtil.bigDecimalMultiply(commissionMoney, platformRatio);
//         if (platformMoney.compareTo(zero) > 0) {
//             // 平台提成
//             platformWalletLogService.addInfo(EPlatform.agentRoleGroupId.getValue(), platformMoney, orderSn, savePlatformype, nt);
//         }
//
//         // 去除平台金额，剩下的为代理人金额，代理人金额按照100%处理
//         BigDecimal agentUserMoney = commissionMoney.subtract(platformMoney);
//
//         // 计算剩余金额
//         BigDecimal residueAgentUserMoney = agentUserMoney;
//
//         // 代理人分成
//         BigDecimal agentUserRatioMoney = CommonUtil.bigDecimalMultiply(agentUserMoney, agentUserRatio);
//         if (agentUserRatioMoney.compareTo(zero) > 0) {
//             userWalletLogService.addInfo(agentUserId, agentUserRatioMoney, zero, orderSn, saveAgentType, nt, EStatus.on.getValue());
//
//             residueAgentUserMoney = residueAgentUserMoney.subtract(agentUserRatioMoney);
//         }
//
//         // 获取代理人推荐人信息
//         UserLevel agentUserLevel = userLevelService.getParentInfo(agentUserId);
//         if (agentUserLevel != null) {
//
//             // 代理一级推荐人金额
//             BigDecimal agentUserRatioOneMoney = CommonUtil.bigDecimalMultiply(agentUserMoney, agentUserRatioOne);
//             // 代理二级推荐人金额
//             BigDecimal agentUserRatioTwoMoney = CommonUtil.bigDecimalMultiply(agentUserMoney, agentUserRatioTwo);
//
//             // 代理一级推荐
//             if (agentUserRatioOneMoney.compareTo(zero) > 0) {
//                 userWalletLogService.addInfo(agentUserLevel.getUserId(), agentUserRatioOneMoney, zero, orderSn, EUserWalletLogType.agentRecommendRebate.getValue(), nt, EStatus.on.getValue());
//
//                 residueAgentUserMoney = residueAgentUserMoney.subtract(agentUserRatioOneMoney);
//             }
//
//             if (agentUserRatioTwoMoney.compareTo(zero) > 0) {
//                 // 代理二级推荐
//                 if (agentUserLevel.getParentUserId() > 0) {
//                     userWalletLogService.addInfo(agentUserLevel.getParentUserId(), agentUserRatioTwoMoney, zero, orderSn, EUserWalletLogType.agentRecommendRebate.getValue(), nt, EStatus.on.getValue());
//
//                     residueAgentUserMoney = residueAgentUserMoney.subtract(agentUserRatioTwoMoney);
//                 } else {
//                     // 没有推荐人，存入平台
//                     platformWalletLogService.addInfo(EPlatform.agentRoleGroupId.getValue(), agentUserRatioTwoMoney, orderSn, EPlatformWalletLogType.userOrderAgentOut.getValue(), nt);
//
//                     residueAgentUserMoney = residueAgentUserMoney.subtract(agentUserRatioTwoMoney);
//                 }
//             }
//
//         } else {
//             // 没有推荐人，存入平台
//             BigDecimal agentTotalRatioMoney =CommonUtil.bigDecimalMultiply(agentUserMoney, CommonUtil.bigDecimalAdd(agentUserRatioOne, agentUserRatioTwo));
//             if (agentTotalRatioMoney.compareTo(zero) > 0) {
//                 platformWalletLogService.addInfo(EPlatform.agentRoleGroupId.getValue(), agentTotalRatioMoney, orderSn, EPlatformWalletLogType.userOrderAgentOut.getValue(), nt);
//
//                 residueAgentUserMoney = residueAgentUserMoney.subtract(agentTotalRatioMoney);
//             }
//         }
//
//         // 代理管理组
//         if (residueAgentUserMoney.compareTo(zero) > 0) {
//
//             // 获取用户所在管理组，如果没有，金额放入平台
//             Integer agentRoleGroupId = agentUserService.getAgentRoleGroupId(agentUserId);
//             if (agentRoleGroupId != null) {
//
//                 // 获取当前组信息
//                 AgentRoleGroup roleGroup = agentRoleGroupService.getRebateListById(agentRoleGroupId);
//
//                 // 获取所有父级组信息
//                 List<AgentRoleGroup> roleGroupList = agentRoleGroupService.getRebateListById(CommonUtil.strToList(roleGroup.getPath()).stream().filter(n -> n != 0).toList());
//
//                 // 每个组管理分成
//                 List<UserWalletLog> userWalletLogList = new ArrayList<>();
//
//                 for (AgentRoleGroup e : roleGroupList) {
//
//                     if (e.getRebateRatio() != null) {
//
//                         // 计算比例金额
//                         BigDecimal groupRebateRatioBigDecimalMoney = CommonUtil.bigDecimalMultiply(agentUserMoney, CommonUtil.bigDecimalDivide(CommonUtil.floatToBigDecimal(e.getRebateRatio()), hundred));
//
//                         if (groupRebateRatioBigDecimalMoney.compareTo(zero) > 0) {
//                             UserWalletLog tmpUserWalletLog = new UserWalletLog();
//                             tmpUserWalletLog.setUserId(e.getUserId());
//                             tmpUserWalletLog.setMoney(groupRebateRatioBigDecimalMoney);
//                             tmpUserWalletLog.setCashMoney(zero);
//                             // tmpUserWalletLog.setCashCharges(zero);
//                             tmpUserWalletLog.setDrawSn(orderSn);
//                             tmpUserWalletLog.setType(EUserWalletLogType.groupRebate.getValue());
//                             tmpUserWalletLog.setCreateTime(nt);
//                             tmpUserWalletLog.setUpdateTime(nt);
//                             tmpUserWalletLog.setStatus(EStatus.on.getValue());
//                             userWalletLogList.add(tmpUserWalletLog);
//
//
//                             residueAgentUserMoney = residueAgentUserMoney.subtract(groupRebateRatioBigDecimalMoney);
//                         }
//
//                     }
//                 }
//
//                 // 处理当前组
//                 if (residueAgentUserMoney.compareTo(zero) > 0) {
//
//                     // 计算当前组数据
//                     BigDecimal roleGroupMoney = CommonUtil.bigDecimalMultiply(agentUserMoney, CommonUtil.bigDecimalDivide(CommonUtil.floatToBigDecimal(roleGroup.getRebateRatio()), hundred));
//
//                     // 剩余金额 - 当前组应得金额 = 最终余额
//                     BigDecimal nowResidueAgentUserMoney = CommonUtil.bigDecimalSubtract(residueAgentUserMoney, roleGroupMoney);
//
//                     // 最终余额 > 0 说明计算分成比例基本正确，将当前组应得金额添加入库，多余部分放入平台记录
//                     if (nowResidueAgentUserMoney.compareTo(zero) > 0) {
//
//                         // 多余部分入平台
//                         platformWalletLogService.addInfo(EPlatform.agentRoleGroupId.getValue(), nowResidueAgentUserMoney, orderSn, EPlatformWalletLogType.userTopGroupOut.getValue(), nt);
//
//                     } else if (nowResidueAgentUserMoney.compareTo(zero) == 0 || nowResidueAgentUserMoney.compareTo(zero) < 0) {
//                         // 最终余额 == 0 说明计算分成比例正确，将当前组应得金额添加入库
//                         // 最终余额 < 0 说明计算分成比例有误差，就不能计算比例分配，直接使用剩余金额
//                         roleGroupMoney = residueAgentUserMoney;
//                     }
//
//                     UserWalletLog tmpUserWalletLog = new UserWalletLog();
//                     tmpUserWalletLog.setUserId(roleGroup.getUserId());
//                     tmpUserWalletLog.setMoney(roleGroupMoney);
//                     tmpUserWalletLog.setCashMoney(zero);
//                     // tmpUserWalletLog.setCashCharges(zero);
//                     tmpUserWalletLog.setDrawSn(orderSn);
//                     tmpUserWalletLog.setType(EUserWalletLogType.groupRebate.getValue());
//                     tmpUserWalletLog.setCreateTime(nt);
//                     tmpUserWalletLog.setUpdateTime(nt);
//                     tmpUserWalletLog.setStatus(EStatus.on.getValue());
//                     userWalletLogList.add(tmpUserWalletLog);
//                 }
//
//                 if (!userWalletLogList.isEmpty()) {
//                     userWalletLogService.saveBatch(userWalletLogList);
//                 }
//
//             } else {
//                 // 代理不在任何组内，多出金额，存入平台
//                 platformWalletLogService.addInfo(EPlatform.agentRoleGroupId.getValue(), residueAgentUserMoney, orderSn, EPlatformWalletLogType.userRoleGroupOut.getValue(), nt);
//             }
//
//         }
//     }
//
//     @Transactional(rollbackFor = Exception.class)
//     @Override
//     public void activityQueue(StoreActivityQueue queue, Integer storeId, BigDecimal storeActivityMoney, BigDecimal storeActivityRebateMaxMoney) {
//
//         // 0元
//         BigDecimal zero = BigDecimal.ZERO;
//
//         // 应该返利金额
//         BigDecimal money = storeActivityRebateMaxMoney;
//
//         // 免单金额小于返利最大限制，使用免单金额
//         if (queue.getRebateMoney().compareTo(money) < 0) {
//             money = queue.getRebateMoney();
//         }
//
//         // 判断活动金额是否足够返利
//         if (storeActivityMoney.compareTo(money) < 0) {
//             throw new GeneralException(HttpStatus.activityMoneyLack);
//         }
//
//         // 获取店铺绑定的代理人
//         Long agentUserId = agentStoreService.getAgentUserIdByStoreId(storeId);
//         if (agentUserId == null) {
//             throw new GeneralException(HttpStatus.agentUserError);
//         }
//
//         /// 开始返利
//
//         BigDecimal rebateMoney = money.negate();
//         // 修改队列为已返利
//         if (!storeActivityQueueMapper.upQueueStatusAndRebateMoney(queue.getOrderSn(), EStoreActivityQueueStatus.wait.getValue(), EStoreActivityQueueStatus.rebate.getValue(), rebateMoney)) {
//             throw new GeneralException(HttpStatus.taskActivityQueueError);
//         }
//
//         // 更新订单返利金额
//         if (!orderMapper.upRebateMoney(queue.getOrderSn(), rebateMoney, EVerify.rebate.getValue(), EPayStatus.finish.getValue(), EVerify.finish.getValue(), EIsScore.wait.getValue())) {
//             throw new GeneralException(HttpStatus.taskUpRebateMoneyError);
//         }
//
//         // 多余金额需要从消费金额减去
//         BigDecimal moreMoney = CommonUtil.bigDecimalSubtract(queue.getRebateMoney(), money);
//         // 用户返利金额减去
//         if (moreMoney.compareTo(zero) > 0) {
//             userWalletMapper.upSpendMoney(queue.getUserId(), moreMoney.negate());
//         }
//
//         // 更新店铺活动金额 增加返利人数
//         if (!storeActivityMapper.upActivityMoney(queue.getStoreActivityId(), rebateMoney)) {
//             throw new GeneralException(HttpStatus.taskStoreActivityMoneyError);
//         }
//
//         Integer nt = TimeUtil.unixTime();
//
//         Platform platform = platformService.getInfo();
//
//         BigDecimal hundred = CommonUtil.integerToBigDecimal(100);
//
//         // 计算手续费
//         BigDecimal cashChargesRatio = CommonUtil.bigDecimalDivide(CommonUtil.floatToBigDecimal(platform.getUserCashChargesRatio()), hundred);
//         BigDecimal cashChargesMoney = CommonUtil.bigDecimalMultiply(money, cashChargesRatio);
//
//
//         // 添加免单信息
//         userWalletLogService.addInfo(queue.getUserId(), money, zero, queue.getOrderSn(), EUserWalletLogType.orderRebate.getValue(), nt, EStatus.on.getValue());
//
//         // 添加提现手续费
//         userWalletLogService.addInfo(queue.getUserId(), cashChargesMoney.negate(), zero, queue.getOrderSn(), EUserWalletLogType.cashCommission.getValue(), nt, EStatus.on.getValue());
//
//         // 提现手续费分成
//         agentCommission(platform, agentUserId, cashChargesMoney, queue.getOrderSn(), ECashType.withdraw.getValue(), nt, hundred, zero);
//
//
//         // if (null == null) {
//             // throw new GeneralException(HttpStatus.codeAlreadySend);
//         // }
//     }
//
// }
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
// // package com.frejoys.service.impl;
// //
// // import cn.hutool.core.util.RandomUtil;
// // import cn.hutool.json.JSONUtil;
// // import com.frejoys.common.enums.EIsScore;
// // import com.frejoys.common.enums.EOrderType;
// // import com.frejoys.common.enums.EPayStatus;
// // import com.frejoys.common.enums.EPayType;
// // import com.frejoys.common.enums.EPlatform;
// // import com.frejoys.common.enums.EPlatformWalletLogType;
// // import com.frejoys.common.enums.EShelves;
// // import com.frejoys.common.enums.EStatus;
// // import com.frejoys.common.enums.EStoreActivityQueueStatus;
// // import com.frejoys.common.enums.EStoreWalletLogType;
// // import com.frejoys.common.enums.EUserWalletLogType;
// // import com.frejoys.common.enums.EVerify;
// // import com.frejoys.common.error.HttpStatus;
// // import com.frejoys.common.exception.GeneralException;
// // import com.frejoys.common.util.CacheKeyUtil;
// // import com.frejoys.common.util.CacheUtil;
// // import com.frejoys.common.util.CommonUtil;
// // import com.frejoys.common.util.TimeUtil;
// // import com.frejoys.dao.entity.AgentRoleGroup;
// // import com.frejoys.dao.entity.Order;
// // import com.frejoys.dao.entity.Platform;
// // import com.frejoys.dao.entity.StoreActivity;
// // import com.frejoys.dao.entity.StoreActivityQueue;
// // import com.frejoys.dao.entity.StoreStatisticsDay;
// // import com.frejoys.dao.entity.StoreStatisticsMonth;
// // import com.frejoys.dao.entity.StoreStatisticsYear;
// // import com.frejoys.dao.entity.UserLevelAgent;
// // import com.frejoys.dao.entity.UserLevelPromotion;
// // import com.frejoys.dao.entity.UserWalletLog;
// // import com.frejoys.dao.mapper.OrderMapper;
// // import com.frejoys.dao.mapper.StoreActivityMapper;
// // import com.frejoys.dao.mapper.StoreActivityQueueMapper;
// // import com.frejoys.dao.mapper.StoreSaleMapper;
// // import com.frejoys.dao.mapper.StoreStatisticsDayMapper;
// // import com.frejoys.dao.mapper.StoreStatisticsMonthMapper;
// // import com.frejoys.dao.mapper.StoreStatisticsYearMapper;
// // import com.frejoys.dao.mapper.UserWalletMapper;
// // import com.frejoys.service.AgentRoleGroupService;
// // import com.frejoys.service.AgentStoreService;
// // import com.frejoys.service.AgentUserService;
// // import com.frejoys.service.OrderService;
// // import com.frejoys.service.PayService;
// // import com.frejoys.service.PlatformService;
// // import com.frejoys.service.PlatformWalletLogService;
// // import com.frejoys.service.RebateService;
// // import com.frejoys.service.StoreActivityQueueService;
// // import com.frejoys.service.StoreWalletLogService;
// // import com.frejoys.service.UserLevelAgentService;
// // import com.frejoys.service.UserLevelPromotionService;
// // import com.frejoys.service.UserWalletLogService;
// // import lombok.RequiredArgsConstructor;
// // import org.redisson.api.RLock;
// // import org.redisson.api.RedissonClient;
// // import org.springframework.stereotype.Service;
// // import org.springframework.transaction.annotation.Transactional;
// //
// // import java.math.BigDecimal;
// // import java.util.ArrayList;
// // import java.util.List;
// // import java.util.Set;
// //
// // // 返利service
// // @Service
// // @RequiredArgsConstructor
// // public class RebateServiceImpl implements RebateService {
// //
// //     private final RedissonClient redissonClient;
// //
// //     private final OrderService orderService;
// //
// //     private final PayService payService;
// //
// //     private final OrderMapper orderMapper;
// //
// //     private final StoreWalletLogService storeWalletLogService;
// //
// //     private final StoreActivityMapper storeActivityMapper;
// //
// //     private final UserLevelPromotionService userLevelPromotionService;
// //
// //     private final UserLevelAgentService userLevelAgentService;
// //
// //     private final PlatformService platformService;
// //
// //     private final PlatformWalletLogService platformWalletLogService;
// //
// //     private final UserWalletLogService userWalletLogService;
// //
// //     private final UserWalletMapper userWalletMapper;
// //
// //     private final StoreActivityQueueMapper storeActivityQueueMapper;
// //
// //     private final StoreSaleMapper storeSaleMapper;
// //
// //     private final StoreStatisticsYearMapper storeStatisticsYearMapper;
// //
// //     private final StoreStatisticsMonthMapper storeStatisticsMonthMapper;
// //
// //     private final StoreStatisticsDayMapper storeStatisticsDayMapper;
// //
// //     private final AgentUserService agentUserService;
// //
// //     private final AgentStoreService agentStoreService;
// //
// //     private final AgentRoleGroupService agentRoleGroupService;
// //
// //     private final StoreActivityQueueService storeActivityQueueService;
// //
// //     @Transactional(rollbackFor = Exception.class)
// //     @Override
// //     public void timeoutOrder() {
// //         // 读取集合中超时的订单
// //         Set<String> orderSet = CacheUtil.getOrderTimeoutSortSet(TimeUtil.unixTime(), 0, 100);
// //
// //         if (!orderSet.isEmpty()) {
// //
// //             // 已经支付的实物订单号
// //             List<Long> payGoodsOrderSn = new ArrayList<>();
// //             // 已经支付的虚拟订单号
// //             List<Long> payVirtuallyOrderSn = new ArrayList<>();
// //             // 未支付的实物订单号
// //             List<Long> noPayGoodsOrderSn = new ArrayList<>();
// //             // 未支付的虚拟订单号
// //             List<Long> noPayVirtuallyOrderSn = new ArrayList<>();
// //
// //             // 查询数据
// //             List<Order> orders = orderService.getListTaskByOrderSn(orderSet.stream().toList());
// //             for (Order order : orders) {
// //                 // 是否核销，支付状态
// //                 if (order.getStatus() < EStatus.on.getValue() || order.getVerify() > EVerify.inProgress.getValue() || order.getPayStatus() > EPayStatus.wait.getValue() || order.getIsScore().equals(EIsScore.finish.getValue())) {
// //                     CacheUtil.delOrderTimeoutSortSet(order.getOrderSn());
// //                     continue;
// //                 }
// //
// //                 // 查询订单是否支付
// //                 try {
// //                     if (order.getPayType().equals(EPayType.alipay.getValue())) {
// //                         // 查询支付宝是否支付
// //                         if (payService.aliOrderPayResult(String.valueOf(order.getOrderSn()))) {
// //
// //                             // 实物订单
// //                             if (order.getType().equals(EOrderType.goodsOrder.getValue())) {
// //                                 payGoodsOrderSn.add(order.getOrderSn());
// //                             } else {
// //                                 // 虚拟订单
// //                                 payVirtuallyOrderSn.add(order.getOrderSn());
// //                             }
// //
// //                         } else {
// //
// //                             // 实物订单
// //                             if (order.getType().equals(EOrderType.goodsOrder.getValue())) {
// //                                 noPayGoodsOrderSn.add(order.getOrderSn());
// //                             } else {
// //                                 // 虚拟订单
// //                                 noPayVirtuallyOrderSn.add(order.getOrderSn());
// //                             }
// //
// //                         }
// //
// //                     } else if (order.getPayType().equals(EPayType.wechat.getValue())) {
// //                         // 查询微信是否支付
// //                         if (payService.wxOrderPayResult(String.valueOf(order.getOrderSn()))) {
// //
// //                             // 实物订单
// //                             if (order.getType().equals(EOrderType.goodsOrder.getValue())) {
// //                                 payGoodsOrderSn.add(order.getOrderSn());
// //                             } else {
// //                                 // 虚拟订单
// //                                 payVirtuallyOrderSn.add(order.getOrderSn());
// //                             }
// //
// //                         } else {
// //
// //                             // 实物订单
// //                             if (order.getType().equals(EOrderType.goodsOrder.getValue())) {
// //                                 noPayGoodsOrderSn.add(order.getOrderSn());
// //                             } else {
// //                                 // 虚拟订单
// //                                 noPayVirtuallyOrderSn.add(order.getOrderSn());
// //                             }
// //
// //                         }
// //                     }
// //
// //                 } catch (Exception e) {
// //                     System.out.println("订单任务错误：" + order.getOrderSn());
// //                     e.printStackTrace();
// //                 }
// //
// //                 CacheUtil.delOrderTimeoutSortSet(order.getOrderSn());
// //             }
// //
// //             // 更新已经支付实物订单为已支付
// //             if (!payGoodsOrderSn.isEmpty()) {
// //                 orderService.taskUpOrderPayStatus(payGoodsOrderSn, EPayStatus.wait.getValue(), EPayStatus.finish.getValue(), null);
// //             }
// //
// //             // 更新已经支付虚拟订单为已支付
// //             if (!payVirtuallyOrderSn.isEmpty()) {
// //                 orderService.taskUpOrderPayStatus(payVirtuallyOrderSn, EPayStatus.wait.getValue(), EPayStatus.finish.getValue(), EVerify.inProgress.getValue());
// //             }
// //
// //             // 更新未支付的实物订单号为失效
// //             if (!noPayGoodsOrderSn.isEmpty()) {
// //
// //                 // 还原商品
// //                 for (Long o : noPayGoodsOrderSn) {
// //                     orderService.resetOrderRepCountPo(o);
// //                 }
// //
// //                 orderService.upOrderStatus(noPayGoodsOrderSn, EStatus.off.getValue());
// //             }
// //
// //             // 更新未支付的虚拟订单号为失效
// //             if (!noPayVirtuallyOrderSn.isEmpty()) {
// //                 orderService.upOrderStatus(noPayVirtuallyOrderSn, EStatus.off.getValue());
// //             }
// //
// //         }
// //     }
// //
// //     @Transactional(rollbackFor = Exception.class)
// //     @Override
// //     public void orderVerify(Integer orderId) {
// //
// //         RLock lock = redissonClient.getLock(CacheKeyUtil.orderTaskVerifyLockKey(orderId));
// //
// //         if (lock.tryLock()) {
// //             try {
// //
// //                 /// 开始进行核销计算
// //                 Order order = orderMapper.getForUpdateInfo(orderId);
// //                 if (order == null || !order.getStatus().equals(EStatus.on.getValue()) || !order.getVerify().equals(EVerify.inProgress.getValue())) {
// //                     return;
// //                 }
// //
// //                 Integer nt = TimeUtil.unixTime();
// //                 Integer ntY = Integer.valueOf(TimeUtil.formatY(nt));
// //                 Integer ntYm = Integer.valueOf(TimeUtil.formatYm(nt));
// //                 Integer ntYmd = Integer.valueOf(TimeUtil.formatYMD(nt));
// //
// //                 // 获取平台设置
// //                 Platform platform = platformService.getInfo();
// //
// //                 // 计算分，元
// //                 BigDecimal hundred = CommonUtil.integerToBigDecimal(100);
// //
// //                 // 订单金额转小数
// //                 // BigDecimal price =  CommonUtil.bigDecimalDivide(CommonUtil.integerToBigDecimal(order.getPrice()), hundred);
// //
// //                 // 店铺最终金额
// //                 BigDecimal storeMoney = CommonUtil.integerToBigDecimal(0);
// //                 // 0元
// //                 BigDecimal zero = BigDecimal.ZERO;
// //
// //                 // 交易手续费
// //                 BigDecimal bankCashChargesMoney = CommonUtil.bigDecimalMultiply(order.getPrice(), CommonUtil.bigDecimalDivide(CommonUtil.integerToBigDecimal(platform.getBankCashChargesRatio()), CommonUtil.integerToBigDecimal(1000)));
// //
// //                 storeMoney = order.getPrice().subtract(bankCashChargesMoney);
// //
// //                 // 活动存在，按照活动比例计算
// //                 if (order.getStoreActivityId() != null) {
// //
// //                     // 1.获取店铺活动返利等信息
// //                     StoreActivity activity = storeActivityMapper.getVerifyInfo(order.getStoreActivityId(), nt, EShelves.onSale.getValue(), EStatus.on.getValue());
// //                     if (activity == null) {
// //                         return;
// //                     }
// //
// //                     // 返利金额
// //                     BigDecimal rebateMoney = CommonUtil.bigDecimalMultiply(order.getPrice(), CommonUtil.bigDecimalDivide(CommonUtil.integerToBigDecimal(activity.getRebateRatio()), hundred));
// //
// //                     // 推广金额
// //                     BigDecimal promotionMoney = CommonUtil.bigDecimalMultiply(order.getPrice(), CommonUtil.bigDecimalDivide(CommonUtil.integerToBigDecimal(activity.getPromotionRatio()), hundred));
// //
// //                     // 佣金金额
// //                     BigDecimal commissionMoney = CommonUtil.bigDecimalMultiply(order.getPrice(), CommonUtil.bigDecimalDivide(CommonUtil.integerToBigDecimal(activity.getCommissionRatio()), hundred));
// //
// //
// //                     // 店铺最终金额
// //                     storeMoney = order.getPrice().subtract(rebateMoney).subtract(promotionMoney).subtract(commissionMoney).subtract(bankCashChargesMoney);
// //
// //                     // 获取店铺绑定的代理人
// //                     Long agentUserId = agentStoreService.getAgentUserIdByStoreId(order.getStoreId());
// //
// //                     // 代理人
// //                     if (commissionMoney.compareTo(zero) > 0) {
// //
// //                         // 平台比例
// //                         BigDecimal platformRatio = CommonUtil.bigDecimalDivide(CommonUtil.integerToBigDecimal(platform.getPlatformRatio()), hundred);
// //                         // 平台获得的金额
// //                         BigDecimal platformMoney = CommonUtil.bigDecimalMultiply(commissionMoney, platformRatio);
// //                         if (platformMoney.compareTo(zero) > 0) {
// //                             platformWalletLogService.addInfo(EPlatform.agentRoleGroupId.getValue(), platformMoney, order.getOrderSn(), EPlatformWalletLogType.userOrder.getValue(), nt);
// //                         }
// //
// //                         // 去除平台金额，剩下的为代理人金额
// //                         BigDecimal agentUserMoney = commissionMoney.subtract(platformMoney);
// //                         // 计算剩余金额
// //                         BigDecimal residueAgentUserMoney = agentUserMoney;
// //
// //
// //                         if (agentUserId != null) {
// //
// //                             // 代理本人比例
// //                             BigDecimal agentUserRatio = CommonUtil.bigDecimalDivide(CommonUtil.integerToBigDecimal(platform.getAgentUserRatio()), hundred);
// //                             BigDecimal agentUserRatioMoney = CommonUtil.bigDecimalMultiply(agentUserMoney, agentUserRatio);
// //                             // 代理本人金额
// //                             if (agentUserRatioMoney.compareTo(zero) > 0) {
// //                                 userWalletLogService.addInfo(agentUserId, agentUserRatioMoney, zero, zero, order.getOrderSn(), EUserWalletLogType.agentRebate.getValue(), nt, EStatus.on.getValue());
// //
// //                                 residueAgentUserMoney = residueAgentUserMoney.subtract(agentUserRatioMoney);
// //
// //
// //                             }
// //
// //
// //                             // 获取代理人推荐人信息
// //                             UserLevelAgent userAgent = userLevelAgentService.getParentInfo(agentUserId);
// //
// //                             if (userAgent != null) {
// //
// //                                 // 代理一级比例
// //                                 BigDecimal agentUserRatioOne = CommonUtil.bigDecimalDivide(CommonUtil.integerToBigDecimal(platform.getAgentUserRatioOne()), hundred);
// //                                 BigDecimal agentUserRatioOneMoney = CommonUtil.bigDecimalMultiply(agentUserMoney, agentUserRatioOne);
// //
// //
// //                                 // 代理二级比例
// //                                 BigDecimal agentUserRatioTwo = CommonUtil.bigDecimalDivide(CommonUtil.integerToBigDecimal(platform.getAgentUserRatioTwo()), hundred);
// //                                 BigDecimal agentUserRatioTwoMoney = CommonUtil.bigDecimalMultiply(agentUserMoney, agentUserRatioTwo);
// //
// //
// //                                 // 代理推荐人
// //                                 if (agentUserRatioOneMoney.compareTo(zero) > 0) {
// //                                     userWalletLogService.addInfo(userAgent.getUserId(), agentUserRatioOneMoney, zero, zero, order.getOrderSn(), EUserWalletLogType.recommendRebate.getValue(), nt, EStatus.on.getValue());
// //
// //                                     residueAgentUserMoney = residueAgentUserMoney.subtract(agentUserRatioOneMoney);
// //                                 }
// //
// //                                 // 代理推荐人父级
// //                                 if (userAgent.getParentUserId() > 0) {
// //                                     if (agentUserRatioTwoMoney.compareTo(zero) > 0) {
// //                                         userWalletLogService.addInfo(userAgent.getParentUserId(), agentUserRatioTwoMoney, zero, zero, order.getOrderSn(), EUserWalletLogType.recommendRebate.getValue(), nt, EStatus.on.getValue());
// //
// //                                         residueAgentUserMoney = residueAgentUserMoney.subtract(agentUserRatioTwoMoney);
// //                                     }
// //                                 } else {
// //                                     // 没有最顶级，多出金额，存入平台
// //                                     if (agentUserRatioTwoMoney.compareTo(zero) > 0) {
// //
// //                                         // 没有推荐人，存入平台
// //                                         platformWalletLogService.addInfo(EPlatform.agentRoleGroupId.getValue(), agentUserRatioTwoMoney, order.getOrderSn(), EPlatformWalletLogType.userOrderAgentOut.getValue(), nt);
// //
// //                                         residueAgentUserMoney = residueAgentUserMoney.subtract(agentUserRatioTwoMoney);
// //
// //                                     }
// //
// //                                 }
// //
// //
// //                             } else {
// //
// //                                 // 没有推荐人，推荐金额存入平台
// //                                 // 代理人一级 + 二级推荐比例
// //                                 BigDecimal agentTotalRatio = CommonUtil.bigDecimalDivide(CommonUtil.integerToBigDecimal(platform.getAgentUserRatioOne() + platform.getAgentUserRatioTwo()), hundred);
// //                                 BigDecimal agentTotalRatioMoney = CommonUtil.bigDecimalMultiply(agentUserMoney, agentTotalRatio);
// //
// //                                 if (agentTotalRatioMoney.compareTo(zero) > 0) {
// //                                     platformWalletLogService.addInfo(EPlatform.agentRoleGroupId.getValue(), agentTotalRatioMoney, order.getOrderSn(), EPlatformWalletLogType.userOrderAgentOut.getValue(), nt);
// //
// //                                     residueAgentUserMoney = residueAgentUserMoney.subtract(agentTotalRatioMoney);
// //
// //                                 }
// //
// //
// //                             }
// //
// //
// //
// //                             // 代理管理组
// //                             if (agentUserMoney.compareTo(zero) > 0) {
// //                                 // 获取用户所在管理组，如果没有，金额放入平台
// //                                 Integer agentRoleGroupId = agentUserService.getAgentRoleGroupId(agentUserId);
// //                                 if (agentRoleGroupId != null) {
// //
// //                                     // 1.获取当前组信息
// //                                     AgentRoleGroup roleGroup = agentRoleGroupService.getRebateListById(agentRoleGroupId);
// //
// //                                     // 2.获取所有父级组信息
// //                                     List<AgentRoleGroup> roleGroupList = agentRoleGroupService.getRebateListById(CommonUtil.strToList(roleGroup.getPath()).stream().filter(n -> n != 0).toList());
// //
// //                                     roleGroupList.add(roleGroup);
// //
// //                                     // // 3.获取角色分成比例
// //                                     // List<Integer> roleGroupIds = roleGroupList.stream().map(AgentRoleGroup::getAgentRoleId).toList();
// //                                     // Map<Integer, Integer> roleMap = agentRoleService.getListById(agentRoleService.getList(), roleGroupIds);
// //
// //
// //                                     // 4.每个组管理分成
// //                                     // 入库数据
// //                                     List<UserWalletLog> userWalletLogList = new ArrayList<>();
// //
// //                                     for (AgentRoleGroup e : roleGroupList) {
// //                                         // 组分成比例
// //                                         // Integer grou pRebateRatio = roleMap.get(e.getAgentRoleId());
// //
// //                                         if (e.getRebateRatio() != null) {
// //
// //                                             // 计算比例
// //                                             BigDecimal groupRebateRatioBigDecimal = CommonUtil.bigDecimalDivide(CommonUtil.integerToBigDecimal(e.getRebateRatio()), hundred);
// //                                             BigDecimal groupRebateRatioBigDecimalMoney = CommonUtil.bigDecimalMultiply(agentUserMoney, groupRebateRatioBigDecimal);
// //
// //                                             if (groupRebateRatioBigDecimalMoney.compareTo(zero) > 0) {
// //                                                 UserWalletLog tmpUserWalletLog = new UserWalletLog();
// //                                                 tmpUserWalletLog.setUserId(e.getUserId());
// //                                                 tmpUserWalletLog.setMoney(groupRebateRatioBigDecimalMoney);
// //                                                 tmpUserWalletLog.setCashMoney(zero);
// //                                                 tmpUserWalletLog.setCashCharges(zero);
// //                                                 tmpUserWalletLog.setDrawSn(order.getOrderSn());
// //                                                 tmpUserWalletLog.setType(EUserWalletLogType.groupRebate.getValue());
// //                                                 tmpUserWalletLog.setCreateTime(nt);
// //                                                 tmpUserWalletLog.setUpdateTime(nt);
// //                                                 tmpUserWalletLog.setStatus(EStatus.on.getValue());
// //                                                 userWalletLogList.add(tmpUserWalletLog);
// //
// //
// //                                                 residueAgentUserMoney = residueAgentUserMoney.subtract(groupRebateRatioBigDecimalMoney);
// //                                             }
// //
// //                                         }
// //                                     }
// //
// //                                     // if (topAgentRoleGroup != null) {
// //                                     //     UserWalletLog tmpUserWalletLog = new UserWalletLog();
// //                                     //     tmpUserWalletLog.setUserId(topAgentRoleGroup.getUserId());
// //                                     //     tmpUserWalletLog.setMoney(CommonUtil.bigDecimalMultiply(residueAgentUserMoney, hundred).intValue());
// //                                     //     tmpUserWalletLog.setDrawSn(order.getOrderSn());
// //                                     //     tmpUserWalletLog.setType(EUserWalletLogType.groupRebate.getValue());
// //                                     //     tmpUserWalletLog.setCreateTime(nt);
// //                                     //     tmpUserWalletLog.setUpdateTime(nt);
// //                                     //     tmpUserWalletLog.setStatus(EStatus.on.getValue());
// //                                     //     userWalletLogList.add(tmpUserWalletLog);
// //                                     //
// //                                     // }
// //
// //                                     // 无顶级组，多出金额，存入平台
// //                                     if (residueAgentUserMoney.compareTo(zero) > 0) {
// //                                         platformWalletLogService.addInfo(EPlatform.agentRoleGroupId.getValue(), residueAgentUserMoney, order.getOrderSn(), EPlatformWalletLogType.userTopGroupOut.getValue(), nt);
// //                                     }
// //
// //                                     if (!userWalletLogList.isEmpty()) {
// //                                         userWalletLogService.saveBatch(userWalletLogList);
// //                                     }
// //
// //                                 } else {
// //
// //                                     // 代理不在任何组内，多出金额，存入平台
// //                                     if (residueAgentUserMoney.compareTo(zero) > 0) {
// //                                         platformWalletLogService.addInfo(EPlatform.agentRoleGroupId.getValue(), residueAgentUserMoney, order.getOrderSn(), EPlatformWalletLogType.userRoleGroupOut.getValue(), nt);
// //                                     }
// //
// //                                 }
// //
// //
// //                             }
// //
// //                         } else {
// //                             throw new GeneralException(HttpStatus.agentUserError);
// //                         }
// //
// //                     }
// //
// //                     /// 达人
// //                     if (promotionMoney.compareTo(zero) > 0) {
// //                         // 获取订单用户的推荐人
// //                         UserLevelPromotion userPromotion = userLevelPromotionService.getParentInfo(order.getUserId());
// //                         if (userPromotion != null) {
// //                             // 达人一级比例
// //                             BigDecimal promotionUserRatio = CommonUtil.bigDecimalDivide(CommonUtil.integerToBigDecimal(platform.getPromotionUserRatio()), hundred);
// //
// //                             // 1级金额
// //                             BigDecimal userPromotionFirst = CommonUtil.bigDecimalMultiply(promotionMoney, promotionUserRatio);
// //                             // 2级金额
// //                             BigDecimal userPromotionTwo = promotionMoney.subtract(userPromotionFirst);
// //
// //                             // 达人推荐人
// //                             if (userPromotionFirst.compareTo(zero) > 0) {
// //                                 userWalletLogService.addInfo(userPromotion.getUserId(), userPromotionFirst, zero, zero, order.getOrderSn(), EUserWalletLogType.promotionRebate.getValue(), nt, EStatus.on.getValue());
// //                             }
// //
// //
// //                             // 达人推荐人父级
// //                             if (userPromotion.getParentUserId() > 0) {
// //                                 if (userPromotionTwo.compareTo(zero) > 0) {
// //                                     userWalletLogService.addInfo(userPromotion.getParentUserId(), userPromotionTwo, zero, zero, order.getOrderSn(), EUserWalletLogType.promotionRebate.getValue(), nt, EStatus.on.getValue());
// //                                 }
// //                             } else {
// //                                 // 没有最顶级，多出金额，存入平台
// //
// //                                 if (userPromotionTwo.compareTo(zero) > 0) {
// //                                     // 没有推荐人，存入平台
// //                                     platformWalletLogService.addInfo(EPlatform.agentRoleGroupId.getValue(), userPromotionTwo, order.getOrderSn(), EPlatformWalletLogType.userOrderOut.getValue(), nt);
// //                                 }
// //
// //                             }
// //
// //                         } else {
// //                             // 没有推荐人，存入平台
// //                             platformWalletLogService.addInfo(EPlatform.agentRoleGroupId.getValue(), promotionMoney, order.getOrderSn(), EPlatformWalletLogType.userOrderOut.getValue(), nt);
// //                         }
// //                     }
// //
// //
// //                     // 返利金额
// //                     if (rebateMoney.compareTo(zero) > 0) {
// //                         // 返利金额放入店铺活动金额池，增加人数
// //                         storeActivityMapper.upActivityInfo(order.getStoreActivityId(), rebateMoney);
// //
// //                         // 放入排队队伍
// //                         storeActivityQueueMapper.addQueue(order.getUserId(), order.getStoreActivityId(), order.getOrderSn(), order.getPrice(), order.getPrice(), activity.getType(), nt, EStatus.on.getValue());
// //
// //                         // 放入用户账户
// //                         userWalletLogService.addInfo(order.getUserId(), order.getPrice(), zero, zero, order.getOrderSn(), EUserWalletLogType.order.getValue(), nt, EStatus.on.getValue());
// //                     }
// //
// //                     // 店铺最终金额
// //                     if (storeMoney.compareTo(zero) > 0) {
// //                         storeWalletLogService.addInfo(order.getStoreId(), storeMoney, zero, bankCashChargesMoney, order.getOrderSn(), EStoreWalletLogType.order.getValue(), nt, EStatus.on.getValue());
// //
// //
// //                         // 记录店铺销售记录
// //                         storeSaleMapper.addInfo(agentUserId, order.getStoreId(), order.getStoreActivityId(), order.getId(), order.getPrice(), activity.getRebateRatio(), activity.getPromotionRatio(), activity.getCommissionRatio(), platform.getBankCashChargesRatio(), rebateMoney, promotionMoney, commissionMoney, storeMoney, bankCashChargesMoney, ntY, ntYm, ntYmd, nt);
// //
// //                         // 记录店铺年统计
// //                         StoreStatisticsYear storeYear = storeStatisticsYearMapper.getIdInfo(order.getStoreId(), ntY);
// //                         if (storeYear == null) {
// //                             storeStatisticsYearMapper.addInfo(order.getStoreId(), order.getPrice(), rebateMoney, promotionMoney, commissionMoney, storeMoney, bankCashChargesMoney, ntY, nt);
// //                         } else {
// //                             storeStatisticsYearMapper.upInfo(storeYear.getId(), order.getPrice(), rebateMoney, promotionMoney, commissionMoney, storeMoney, bankCashChargesMoney);
// //                         }
// //
// //                         // 记录店铺月统计
// //                         StoreStatisticsMonth storeMonth = storeStatisticsMonthMapper.getIdInfo(order.getStoreId(), ntYm);
// //                         if (storeMonth == null) {
// //                             storeStatisticsMonthMapper.addInfo(order.getStoreId(), order.getPrice(), rebateMoney, promotionMoney, commissionMoney, storeMoney, bankCashChargesMoney, ntY, ntYm, nt);
// //                         } else {
// //                             storeStatisticsMonthMapper.upInfo(storeMonth.getId(), order.getPrice(), rebateMoney, promotionMoney, commissionMoney, storeMoney, bankCashChargesMoney);
// //                         }
// //
// //
// //                         // 记录店铺日统计
// //                         StoreStatisticsDay storeDay = storeStatisticsDayMapper.getIdInfo(order.getStoreId(), ntYmd);
// //                         if (storeDay == null) {
// //                             storeStatisticsDayMapper.addInfo(order.getStoreId(), order.getPrice(), rebateMoney, promotionMoney, commissionMoney, storeMoney, bankCashChargesMoney, ntY, ntYm, ntYmd, nt);
// //                         } else {
// //                             storeStatisticsDayMapper.upInfo(storeDay.getId(), order.getPrice(), rebateMoney, promotionMoney, commissionMoney, storeMoney, bankCashChargesMoney);
// //                         }
// //
// //                     }
// //
// //                 } else {
// //                     // 活动不存在，订单金额全部给商家
// //                     storeWalletLogService.addInfo(order.getStoreId(), storeMoney, zero, bankCashChargesMoney, order.getOrderSn(), EStoreWalletLogType.order.getValue(), nt, EStatus.on.getValue());
// //
// //
// //                     // 记录店铺销售记录
// //                     storeSaleMapper.addInfo(order.getUserId(), order.getStoreId(), order.getStoreActivityId(), order.getId(), order.getPrice(), 0, 0, 0, platform.getBankCashChargesRatio(), zero, zero, zero, storeMoney, bankCashChargesMoney, ntY, ntYm, ntYmd, nt);
// //
// //                     // 记录店铺年统计
// //                     StoreStatisticsYear storeYear = storeStatisticsYearMapper.getIdInfo(order.getStoreId(), ntY);
// //                     if (storeYear == null) {
// //                         storeStatisticsYearMapper.addInfo(order.getStoreId(), order.getPrice(), zero, zero, zero, storeMoney, bankCashChargesMoney, ntY, nt);
// //                     } else {
// //                         storeStatisticsYearMapper.upInfo(storeYear.getId(), order.getPrice(), zero, zero, zero, storeMoney, bankCashChargesMoney);
// //                     }
// //
// //                     // 记录店铺月统计
// //                     StoreStatisticsMonth storeMonth = storeStatisticsMonthMapper.getIdInfo(order.getStoreId(), ntYm);
// //                     if (storeMonth == null) {
// //                         storeStatisticsMonthMapper.addInfo(order.getStoreId(), order.getPrice(), zero, zero, zero, storeMoney, bankCashChargesMoney, ntY, ntYm, nt);
// //                     } else {
// //                         storeStatisticsMonthMapper.upInfo(storeMonth.getId(), order.getPrice(), zero, zero, zero, storeMoney, bankCashChargesMoney);
// //                     }
// //
// //
// //                     // 记录店铺日统计
// //                     StoreStatisticsDay storeDay = storeStatisticsDayMapper.getIdInfo(order.getStoreId(), ntYmd);
// //                     if (storeDay == null) {
// //                         storeStatisticsDayMapper.addInfo(order.getStoreId(), order.getPrice(), zero, zero, zero, storeMoney, bankCashChargesMoney, ntY, ntYm, ntYmd, nt);
// //                     } else {
// //                         storeStatisticsDayMapper.upInfo(storeDay.getId(), order.getPrice(), zero, zero, zero, storeMoney, bankCashChargesMoney);
// //                     }
// //
// //                 }
// //
// //                 // 订单交易手续费
// //                 if (bankCashChargesMoney.compareTo(zero) > 0) {
// //                     platformWalletLogService.addInfo(EPlatform.agentRoleGroupId.getValue(), bankCashChargesMoney, order.getOrderSn(), EPlatformWalletLogType.orderCashCharges.getValue(), nt);
// //                 }
// //
// //                 // 更新订单为已核销
// //                 orderMapper.upVerifyInfo(order.getId(), EVerify.inProgress.getValue(), EVerify.finish.getValue());
// //
// //
// //             } finally {
// //                 if (lock.isLocked() && lock.isHeldByCurrentThread()) {
// //                     lock.unlock();
// //                 }
// //             }
// //         }
// //
// //     }
// //
// //     @Transactional(rollbackFor = Exception.class)
// //     @Override
// //     public void activityQueue(StoreActivityQueue queue, BigDecimal storeActivityMoney, BigDecimal storeActivityRebateMaxMoney) {
// //
// //         // 0元
// //         BigDecimal zero = BigDecimal.ZERO;
// //
// //         // 应该返利金额
// //         BigDecimal money = storeActivityRebateMaxMoney;
// //
// //         // 免单金额小于返利最大限制，使用免单金额
// //         if (queue.getRebateMoney().compareTo(money) < 0) {
// //             money = queue.getRebateMoney();
// //         }
// //
// //         // 判断活动金额是否足够返利
// //         if (storeActivityMoney.compareTo(money) < 0) {
// //             throw new GeneralException(HttpStatus.activityMoneyLack);
// //         }
// //
// //         /// 开始返利
// //
// //         BigDecimal rebateMoney = money.negate();
// //         // 修改队列为已返利
// //         if (!storeActivityQueueMapper.upQueueStatusAndRebateMoney(queue.getOrderSn(), EStoreActivityQueueStatus.wait.getValue(), EStoreActivityQueueStatus.rebate.getValue(), rebateMoney)) {
// //             throw new GeneralException(HttpStatus.taskActivityQueueError);
// //         }
// //
// //         // 更新返利金额
// //         if (!orderMapper.upRebateMoney(queue.getOrderSn(), rebateMoney, EVerify.rebate.getValue(), EPayStatus.finish.getValue(), EVerify.finish.getValue(), EIsScore.wait.getValue())) {
// //             throw new GeneralException(HttpStatus.taskUpRebateMoneyError);
// //         }
// //
// //         // 多余金额需要从消费金额减去
// //         BigDecimal moreMoney = CommonUtil.bigDecimalSubtract(queue.getRebateMoney(), money);
// //         // 用户返利金额减去
// //         if (moreMoney.compareTo(zero) > 0) {
// //             userWalletMapper.upSpendMoney(queue.getUserId(), moreMoney.negate());
// //         }
// //
// //         // 更新店铺活动金额
// //         if (!storeActivityMapper.upActivityMoney(queue.getStoreActivityId(), rebateMoney)) {
// //             throw new GeneralException(HttpStatus.taskStoreActivityMoneyError);
// //         }
// //
// //         // 添加免单信息
// //         userWalletLogService.addInfo(queue.getUserId(), money, zero, zero, queue.getOrderSn(), EUserWalletLogType.orderRebate.getValue(), TimeUtil.unixTime(), EStatus.on.getValue());
// //
// //         if (null == null) {
// //             // throw new GeneralException(HttpStatus.codeAlreadySend);
// //         }
// //
// //
// //     }
// //
// //
// //     /**********************************/
// //
// //
// //         // // 计算已经返利了多少，订单金额减去返利订单金额，等于已经返利的金额
// //         // BigDecimal returnMoney = CommonUtil.bigDecimalSubtract(queue.getPrice(), queue.getRebateMoney());
// //         //
// //         // // 获取剩余应该返利金额
// //         // BigDecimal finalMoney = CommonUtil.bigDecimalSubtract(money, returnMoney);
// //         // BigDecimal residueMoney = finalMoney;
// //         //
// //         // Integer nt = TimeUtil.unixTime();
// //
// //         // if (residueMoney.compareTo(zero) > 0) {
// //         //     // 继续返利
// //         //
// //         //
// //         //     // 活动金额大于等于应该返利的金额，全返
// //         //     // 活动金额不足，返活动金额
// //         //     if (storeActivityMoney.compareTo(residueMoney) < 0) {
// //         //         residueMoney = storeActivityMoney;
// //         //     }
// //         //
// //         //     // 开始返利
// //         //
// //         //     // 更新订单返利金额
// //         //     if (!orderMapper.upRebateMoney(queue.getOrderSn(), residueMoney.negate(), EVerify.finish.getValue(), EIsScore.wait.getValue())) {
// //         //         throw new GeneralException(HttpStatus.taskUpRebateMoneyError);
// //         //     }
// //         //
// //         //     // 更新活动队列返利金额
// //         //     if (!storeActivityQueueMapper.upRebateMoney(queue.getOrderSn(), EStoreActivityQueueStatus.wait.getValue(), residueMoney.negate())) {
// //         //         throw new GeneralException(HttpStatus.taskActivityQueueMoneyError);
// //         //     }
// //         //
// //         //     // 更新店铺活动金额
// //         //     if (!storeActivityMapper.upActivityMoney(queue.getStoreActivityId(), residueMoney.negate())) {
// //         //         throw new GeneralException(HttpStatus.taskStoreActivityMoneyError);
// //         //     }
// //         //
// //         //     // 添加免单信息
// //         //     userWalletLogService.addInfo(queue.getUserId(), residueMoney, zero, zero, queue.getOrderSn(), EUserWalletLogType.orderRebate.getValue(), nt, EStatus.on.getValue());
// //         //
// //         //     // 活动金额足够全返完
// //         //     if (CommonUtil.bigDecimalSubtract(finalMoney, residueMoney).compareTo(zero) == 0) {
// //         //         // 扣除订单剩余未达到返利条件的金额
// //         //         BigDecimal residuePrice = CommonUtil.bigDecimalSubtract(queue.getPrice(), CommonUtil.bigDecimalAdd(returnMoney, residueMoney));
// //         //         if (residuePrice.compareTo(zero) > 0) {
// //         //             userWalletMapper.upSpendMoney(queue.getUserId(), residuePrice.negate());
// //         //         }
// //         //
// //         //         // 将队列改为已返利
// //         //         if (!storeActivityQueueMapper.upQueueStatusAndRebateMoney(queue.getOrderSn(), EStoreActivityQueueStatus.wait.getValue(), EStoreActivityQueueStatus.rebate.getValue(), zero)) {
// //         //             throw new GeneralException(HttpStatus.taskActivityQueueError);
// //         //         }
// //         //
// //         //         // 将订单改为已返利
// //         //         if (!orderMapper.upVerifyInfoByOrderSn(queue.getOrderSn(), EVerify.finish.getValue(), EVerify.rebate.getValue())) {
// //         //             throw new GeneralException(HttpStatus.taskUpverifyError);
// //         //         }
// //         //     }
// //         //
// //         // } else {
// //         //     // 已经返利完成
// //         //
// //         //     // 扣除订单剩余未达到返利条件的金额
// //         //     if (queue.getRebateMoney().compareTo(zero) > 0) {
// //         //         userWalletMapper.upSpendMoney(queue.getUserId(), queue.getRebateMoney().negate());
// //         //     }
// //         //
// //         //     // 将队列改为已返利
// //         //     if (!storeActivityQueueMapper.upQueueStatusAndRebateMoney(queue.getOrderSn(), EStoreActivityQueueStatus.wait.getValue(), EStoreActivityQueueStatus.rebate.getValue(), zero)) {
// //         //         throw new GeneralException(HttpStatus.taskActivityQueueError);
// //         //     }
// //         //
// //         //     // 将订单改为已返利
// //         //     if (!orderMapper.upVerifyInfoByOrderSn(queue.getOrderSn(), EVerify.finish.getValue(), EVerify.rebate.getValue())) {
// //         //         throw new GeneralException(HttpStatus.taskUpverifyError);
// //         //     }
// //         //
// //         // }
// //
// //
// //
// //
// //
// //
// //         // // 默认返利最大金额
// //         // BigDecimal rebateMoney = storeActivityRebateMaxMoney;
// //         //
// //         // // 消费返利金额小于最大金额，使用消费返利金额
// //         // if (rebateMoney.compareTo(queue.getRebateMoney()) > 0) {
// //         //     rebateMoney = queue.getRebateMoney();
// //         // }
// //         //
// //         // // 金额池必须大于返利金额
// //         // if (rebateMoney.compareTo(storeActivityMoney) > 0) {
// //         //     throw new GeneralException(HttpStatus.activityMoneyLack);
// //         // }
// //         //
// //         // /// 开始返利
// //         //
// //         // // 0元
// //         // // BigDecimal zero = BigDecimal.ZERO;
// //         //
// //         // // 获取平台设置
// //         // Platform platform = platformService.getInfo();
// //         //
// //         // // 计算分，元
// //         // BigDecimal hundred = CommonUtil.integerToBigDecimal(100);
// //         //
// //         // // 限制1 - 100
// //         // Integer platformStartRatio = platform.getStartRatio();
// //         // if (platformStartRatio > 100) {
// //         //     platformStartRatio = 100;
// //         // } else if (platformStartRatio < 1) {
// //         //     platformStartRatio = 1;
// //         // }
// //         //
// //         // Integer platformEndRatio = platform.getEndRatio();
// //         // if (platformEndRatio > 100) {
// //         //     platformEndRatio = 100;
// //         // } else if (platformEndRatio < 1) {
// //         //     platformEndRatio = 1;
// //         // }
// //         //
// //         // // 转换
// //         // BigDecimal startRatio = CommonUtil.bigDecimalDivide(CommonUtil.integerToBigDecimal(platformStartRatio), hundred);
// //         // BigDecimal endRatio = CommonUtil.bigDecimalDivide(CommonUtil.integerToBigDecimal(platformEndRatio), hundred);
// //         //
// //         // // 计算起始金额
// //         // BigDecimal startMoney = CommonUtil.bigDecimalMultiply(rebateMoney, startRatio);
// //         // // 计算结束金额
// //         // BigDecimal endMoney =  CommonUtil.bigDecimalMultiply(rebateMoney, endRatio);
// //         //
// //         // // 随机免单金额
// //         // BigDecimal finalMoney = startMoney.equals(endMoney) ? startMoney : CommonUtil.bigDecimalDivide(CommonUtil.integerToBigDecimal(RandomUtil.randomInt(CommonUtil.bigDecimalMultiply(startMoney, hundred).intValue(), CommonUtil.bigDecimalMultiply(endMoney, hundred).intValue())), hundred);
// //         //
// //         // // Integer nt = TimeUtil.unixTime();
// //         //
// //         // // 多余金额需要从消费金额减去
// //         // // BigDecimal moreMoney = queue.getRebateMoney().subtract(finalMoney);
// //         // BigDecimal moreMoney = CommonUtil.bigDecimalSubtract(queue.getRebateMoney(), finalMoney);
// //         //
// //         // // 修改队列为已返利
// //         // if (!storeActivityQueueMapper.upQueueStatusAndRebateMoney(queue.getOrderSn(), EStoreActivityQueueStatus.wait.getValue(), EStoreActivityQueueStatus.rebate.getValue(), finalMoney.negate())) {
// //         //     throw new GeneralException(HttpStatus.taskActivityQueueError);
// //         // }
// //         //
// //         // // 更新返利金额
// //         // if (!orderMapper.upRebateMoney(queue.getOrderSn(), finalMoney.negate())) {
// //         //     throw new GeneralException(HttpStatus.taskUpRebateMoneyError);
// //         // }
// //         //
// //         //
// //         // if (moreMoney.compareTo(zero) > 0) {
// //         //     userWalletMapper.upSpendMoney(queue.getUserId(), moreMoney.negate());
// //         // }
// //         //
// //         // // 添加免单信息
// //         // userWalletLogService.addInfo(queue.getUserId(), finalMoney, zero, zero, queue.getOrderSn(), EUserWalletLogType.orderRebate.getValue(), nt, EStatus.on.getValue());
// //
// //     // }
// //
// //     // @Transactional(rollbackFor = Exception.class)
// //     // @Override
// //     // public void activityQueue(StoreActivityQueue queue, BigDecimal storeActivityMoney, BigDecimal storeActivityRebateMaxMoney) {
// //     //
// //     //     // 0元
// //     //     BigDecimal zero = BigDecimal.ZERO;
// //     //
// //     //     // 应该返利金额
// //     //     BigDecimal money = BigDecimal.ZERO;
// //     //
// //     //     // 免单金额大于最大限制金额，走限制金额
// //     //     if (queue.getPrice().compareTo(storeActivityRebateMaxMoney) > 0) {
// //     //         money = storeActivityRebateMaxMoney;
// //     //     } else {
// //     //         // 走订单金额
// //     //         money = queue.getPrice();
// //     //     }
// //     //
// //     //     // 计算已经返利了多少，订单金额减去返利订单金额，等于已经返利的金额
// //     //     BigDecimal returnMoney = CommonUtil.bigDecimalSubtract(queue.getPrice(), queue.getRebateMoney());
// //     //
// //     //     // 获取剩余应该返利金额
// //     //     BigDecimal finalMoney = CommonUtil.bigDecimalSubtract(money, returnMoney);
// //     //     BigDecimal residueMoney = finalMoney;
// //     //
// //     //     Integer nt = TimeUtil.unixTime();
// //     //
// //     //     if (residueMoney.compareTo(zero) > 0) {
// //     //         // 继续返利
// //     //
// //     //
// //     //         // 活动金额大于等于应该返利的金额，全返
// //     //         // 活动金额不足，返活动金额
// //     //         if (storeActivityMoney.compareTo(residueMoney) < 0) {
// //     //             residueMoney = storeActivityMoney;
// //     //         }
// //     //
// //     //         // 开始返利
// //     //
// //     //         // 更新订单返利金额
// //     //         if (!orderMapper.upRebateMoney(queue.getOrderSn(), residueMoney.negate(), EVerify.finish.getValue(), EIsScore.wait.getValue())) {
// //     //             throw new GeneralException(HttpStatus.taskUpRebateMoneyError);
// //     //         }
// //     //
// //     //         // 更新活动队列返利金额
// //     //         if (!storeActivityQueueMapper.upRebateMoney(queue.getOrderSn(), EStoreActivityQueueStatus.wait.getValue(), residueMoney.negate())) {
// //     //             throw new GeneralException(HttpStatus.taskActivityQueueMoneyError);
// //     //         }
// //     //
// //     //         // 更新店铺活动金额
// //     //         if (!storeActivityMapper.upActivityMoney(queue.getStoreActivityId(), residueMoney.negate())) {
// //     //             throw new GeneralException(HttpStatus.taskStoreActivityMoneyError);
// //     //         }
// //     //
// //     //         // 添加免单信息
// //     //         userWalletLogService.addInfo(queue.getUserId(), residueMoney, zero, zero, queue.getOrderSn(), EUserWalletLogType.orderRebate.getValue(), nt, EStatus.on.getValue());
// //     //
// //     //         // 活动金额足够全返完
// //     //         if (CommonUtil.bigDecimalSubtract(finalMoney, residueMoney).compareTo(zero) == 0) {
// //     //             // 扣除订单剩余未达到返利条件的金额
// //     //             BigDecimal residuePrice = CommonUtil.bigDecimalSubtract(queue.getPrice(), CommonUtil.bigDecimalAdd(returnMoney, residueMoney));
// //     //             if (residuePrice.compareTo(zero) > 0) {
// //     //                 userWalletMapper.upSpendMoney(queue.getUserId(), residuePrice.negate());
// //     //             }
// //     //
// //     //             // 将队列改为已返利
// //     //             if (!storeActivityQueueMapper.upQueueStatusAndRebateMoney(queue.getOrderSn(), EStoreActivityQueueStatus.wait.getValue(), EStoreActivityQueueStatus.rebate.getValue(), zero)) {
// //     //                 throw new GeneralException(HttpStatus.taskActivityQueueError);
// //     //             }
// //     //
// //     //             // 将订单改为已返利
// //     //             if (!orderMapper.upVerifyInfoByOrderSn(queue.getOrderSn(), EVerify.finish.getValue(), EVerify.rebate.getValue())) {
// //     //                 throw new GeneralException(HttpStatus.taskUpverifyError);
// //     //             }
// //     //         }
// //     //
// //     //     } else {
// //     //         // 已经返利完成
// //     //
// //     //         // 扣除订单剩余未达到返利条件的金额
// //     //         if (queue.getRebateMoney().compareTo(zero) > 0) {
// //     //             userWalletMapper.upSpendMoney(queue.getUserId(), queue.getRebateMoney().negate());
// //     //         }
// //     //
// //     //         // 将队列改为已返利
// //     //         if (!storeActivityQueueMapper.upQueueStatusAndRebateMoney(queue.getOrderSn(), EStoreActivityQueueStatus.wait.getValue(), EStoreActivityQueueStatus.rebate.getValue(), zero)) {
// //     //             throw new GeneralException(HttpStatus.taskActivityQueueError);
// //     //         }
// //     //
// //     //         // 将订单改为已返利
// //     //         if (!orderMapper.upVerifyInfoByOrderSn(queue.getOrderSn(), EVerify.finish.getValue(), EVerify.rebate.getValue())) {
// //     //             throw new GeneralException(HttpStatus.taskUpverifyError);
// //     //         }
// //     //
// //     //     }
// //     //
// //     //
// //     //
// //     //
// //     //
// //     //
// //     //     // // 默认返利最大金额
// //     //     // BigDecimal rebateMoney = storeActivityRebateMaxMoney;
// //     //     //
// //     //     // // 消费返利金额小于最大金额，使用消费返利金额
// //     //     // if (rebateMoney.compareTo(queue.getRebateMoney()) > 0) {
// //     //     //     rebateMoney = queue.getRebateMoney();
// //     //     // }
// //     //     //
// //     //     // // 金额池必须大于返利金额
// //     //     // if (rebateMoney.compareTo(storeActivityMoney) > 0) {
// //     //     //     throw new GeneralException(HttpStatus.activityMoneyLack);
// //     //     // }
// //     //     //
// //     //     // /// 开始返利
// //     //     //
// //     //     // // 0元
// //     //     // // BigDecimal zero = BigDecimal.ZERO;
// //     //     //
// //     //     // // 获取平台设置
// //     //     // Platform platform = platformService.getInfo();
// //     //     //
// //     //     // // 计算分，元
// //     //     // BigDecimal hundred = CommonUtil.integerToBigDecimal(100);
// //     //     //
// //     //     // // 限制1 - 100
// //     //     // Integer platformStartRatio = platform.getStartRatio();
// //     //     // if (platformStartRatio > 100) {
// //     //     //     platformStartRatio = 100;
// //     //     // } else if (platformStartRatio < 1) {
// //     //     //     platformStartRatio = 1;
// //     //     // }
// //     //     //
// //     //     // Integer platformEndRatio = platform.getEndRatio();
// //     //     // if (platformEndRatio > 100) {
// //     //     //     platformEndRatio = 100;
// //     //     // } else if (platformEndRatio < 1) {
// //     //     //     platformEndRatio = 1;
// //     //     // }
// //     //     //
// //     //     // // 转换
// //     //     // BigDecimal startRatio = CommonUtil.bigDecimalDivide(CommonUtil.integerToBigDecimal(platformStartRatio), hundred);
// //     //     // BigDecimal endRatio = CommonUtil.bigDecimalDivide(CommonUtil.integerToBigDecimal(platformEndRatio), hundred);
// //     //     //
// //     //     // // 计算起始金额
// //     //     // BigDecimal startMoney = CommonUtil.bigDecimalMultiply(rebateMoney, startRatio);
// //     //     // // 计算结束金额
// //     //     // BigDecimal endMoney =  CommonUtil.bigDecimalMultiply(rebateMoney, endRatio);
// //     //     //
// //     //     // // 随机免单金额
// //     //     // BigDecimal finalMoney = startMoney.equals(endMoney) ? startMoney : CommonUtil.bigDecimalDivide(CommonUtil.integerToBigDecimal(RandomUtil.randomInt(CommonUtil.bigDecimalMultiply(startMoney, hundred).intValue(), CommonUtil.bigDecimalMultiply(endMoney, hundred).intValue())), hundred);
// //     //     //
// //     //     // // Integer nt = TimeUtil.unixTime();
// //     //     //
// //     //     // // 多余金额需要从消费金额减去
// //     //     // // BigDecimal moreMoney = queue.getRebateMoney().subtract(finalMoney);
// //     //     // BigDecimal moreMoney = CommonUtil.bigDecimalSubtract(queue.getRebateMoney(), finalMoney);
// //     //     //
// //     //     // // 修改队列为已返利
// //     //     // if (!storeActivityQueueMapper.upQueueStatusAndRebateMoney(queue.getOrderSn(), EStoreActivityQueueStatus.wait.getValue(), EStoreActivityQueueStatus.rebate.getValue(), finalMoney.negate())) {
// //     //     //     throw new GeneralException(HttpStatus.taskActivityQueueError);
// //     //     // }
// //     //     //
// //     //     // // 更新返利金额
// //     //     // if (!orderMapper.upRebateMoney(queue.getOrderSn(), finalMoney.negate())) {
// //     //     //     throw new GeneralException(HttpStatus.taskUpRebateMoneyError);
// //     //     // }
// //     //     //
// //     //     //
// //     //     // if (moreMoney.compareTo(zero) > 0) {
// //     //     //     userWalletMapper.upSpendMoney(queue.getUserId(), moreMoney.negate());
// //     //     // }
// //     //     //
// //     //     // // 添加免单信息
// //     //     // userWalletLogService.addInfo(queue.getUserId(), finalMoney, zero, zero, queue.getOrderSn(), EUserWalletLogType.orderRebate.getValue(), nt, EStatus.on.getValue());
// //     //
// //     // }
// //
// //
// // }